bitkeeper revision 1.722 (402c92c5m6bew87rlD47Gjf50LsJQw)
authorkaf24@scramble.cl.cam.ac.uk <kaf24@scramble.cl.cam.ac.uk>
Fri, 13 Feb 2004 09:03:01 +0000 (09:03 +0000)
committerkaf24@scramble.cl.cam.ac.uk <kaf24@scramble.cl.cam.ac.uk>
Fri, 13 Feb 2004 09:03:01 +0000 (09:03 +0000)
traps.c:
  Fix flush_page_update_queue reentrancy bug.

xenolinux-2.4.24-sparse/arch/xeno/kernel/traps.c

index cb45e1c27826539bef1e5ad38b1b59b4ef776cf6..0b172ff87dfd6bc9642d66c18d76ae028432283c 100644 (file)
@@ -313,12 +313,14 @@ asmlinkage void do_general_protection(struct pt_regs * regs, long error_code)
        if ( unlikely((error_code & 6) == 4) )
        {
                unsigned long ldt;
-               flush_page_update_queue(); /* ensure LDTR is up to date */
                __asm__ __volatile__ ( "sldt %0" : "=r" (ldt) );
-               if ( likely(ldt == 0) )
+               if ( ldt == 0 )
                {
-                       queue_set_ldt((unsigned long)&default_ldt[0], 5);
-                       flush_page_update_queue();
+                       mmu_update_t u;
+                       u.ptr  = MMU_EXTENDED_COMMAND;
+                       u.ptr |= (unsigned long)&default_ldt[0];
+                       u.val  = MMUEXT_SET_LDT | (5 << MMUEXT_CMD_SHIFT);
+                       HYPERVISOR_mmu_update(&u, 1);
                        return;
                }
        }